From 86316089e4611c19d3b53c16f0ace532ef24a576 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Tue, 24 Aug 2010 18:28:26 +0100 Subject: [PATCH] libxl: do not leak path to dom0 attached disk after running bootloader Signed-off-by: Ian Campbell Signed-off-by: Ian Jackson --- tools/libxl/libxl_bootloader.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 08d6a22274..13721f7fab 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -33,7 +33,7 @@ static char **make_bootloader_args(libxl_gc *gc, libxl_domain_build_info *info, uint32_t domid, - const char *fifo, const char *disk) + const char *fifo, char *disk) { flexarray_t *args; int nr = 0; @@ -65,7 +65,7 @@ static char **make_bootloader_args(libxl_gc *gc, } while ((t = strtok_r(NULL, " \t\n", &saveptr))); } - flexarray_set(args, nr++, strdup(disk)); + flexarray_set(args, nr++, disk); /* Sentinal for execv */ flexarray_set(args, nr++, NULL); @@ -303,7 +303,7 @@ int libxl_run_bootloader(libxl_ctx *ctx, libxl_gc gc = LIBXL_INIT_GC(ctx); int ret, rc = 0; char *fifo = NULL; - const char *diskpath = NULL; + char *diskpath = NULL; char **args = NULL; char tempdir_template[] = "/var/run/libxl/bl.XXXXXX"; @@ -414,12 +414,14 @@ int libxl_run_bootloader(libxl_ctx *ctx, goto out_close; } - libxl_device_disk_local_detach(ctx, disk); - parse_bootloader_result(ctx, info, blout); rc = 0; out_close: + if (diskpath) { + libxl_device_disk_local_detach(ctx, disk); + free(diskpath); + } if (fifo_fd > -1) close(fifo_fd); if (bootloader_fd > -1) -- 2.30.2